Il Pumping Lemma (lemma del pompaggio) è un teorema fondamentale nella teoria dei linguaggi formali. È utilizzato principalmente per dimostrare che un determinato linguaggio non è regolare. Non può essere usato per dimostrare che un linguaggio è regolare. Esistono versioni del Pumping Lemma per classi di linguaggi formali diverse, come i linguaggi context-free.
Idea di base:
Il Pumping Lemma sfrutta la natura "ripetitiva" di stringhe sufficientemente lunghe in un linguaggio regolare. Se un linguaggio è regolare, allora tutte le stringhe sufficientemente lunghe in quel linguaggio contengono una sottostringa che può essere "ripetuta" (pompare) un numero arbitrario di volte, mantenendo la stringa risultante ancora nel linguaggio. In altre parole, se una stringa w è abbastanza lunga, può essere suddivisa in tre parti, x, y, e z, tale che xy<sup>i</sup>z appartenga al linguaggio per ogni i ≥ 0, dove y non è vuota.
Pumping Lemma per Linguaggi Regolari (affermazione formale):
Sia L un linguaggio regolare. Allora esiste una costante p (la pumping length o lunghezza di pompaggio) tale che per ogni stringa w in L con |w| ≥ p, w può essere suddivisa in tre sottostringhe x, y, e z, tali che:
Utilizzo del Pumping Lemma per dimostrare che un linguaggio non è regolare:
Il Pumping Lemma viene usato per contraddizione. Per dimostrare che un linguaggio L non è regolare, è necessario:
Esempio:
Considera il linguaggio L = {a<sup>n</sup>b<sup>n</sup> | n ≥ 0}. Vogliamo dimostrare che questo linguaggio non è regolare usando il Pumping Lemma.
Assunzione: Assumiamo che L sia regolare.
Pumping Lemma: Sia p la lunghezza di pompaggio garantita dal Pumping Lemma.
Scelta di w: Sia w = a<sup>p</sup>b<sup>p</sup>. Chiaramente, w ∈ L e |w| = 2p ≥ p.
Suddivisioni: Consideriamo le possibili suddivisioni di w in x, y, e z tali che w = xyz, |y| > 0, e |xy| ≤ p. Poiché |xy| ≤ p, xy deve consistere interamente di simboli 'a'. Quindi possiamo scrivere:
Pompaggio: Scegliamo i = 2. Allora xy<sup>2</sup>z = a<sup>j</sup>a<sup>2k</sup>a<sup>p-j-k</sup>b<sup>p</sup> = a<sup>p+k</sup>b<sup>p</sup>. Poiché k > 0, la stringa a<sup>p+k</sup>b<sup>p</sup> ha più 'a' che 'b' e quindi non appartiene a L.
Contraddizione: Abbiamo dimostrato che per ogni suddivisione possibile di w in x, y, e z, esiste un i (in questo caso i = 2) tale che xy<sup>i</sup>z ∉ L. Questo contraddice il Pumping Lemma.
Conclusione: Pertanto, l'assunzione che L sia regolare è falsa, e quindi L non è regolare.
Argomenti Importanti:
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page